# -*- coding: utf-8 -*-
# &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
# AmosERP odoo11.0
# QQ:35350428
# 邮件:35350428@qq.com
# 手机：13584935775
# 作者：'odoo'
# 公司网址： www.odoo.pw  www.100china.cn www.amoserp.com
# Copyright 昆山一百计算机有限公司 2012-2020 Amos
# 日期：2019/11/14
# &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
from odoo import api, fields, models, SUPERUSER_ID, tools, _
from odoo.exceptions import AccessError, UserError, ValidationError
from dingtalk import SecretClient, AppKeyClient


class Res_Ding(models.Model):
    _name = 'res.ding'
    _description = u"钉钉配置"

    name = fields.Char(string=u'应用名称')

    corp_id = fields.Char(string=u'corp_id')
    agentid = fields.Char(string=u'AgentID')
    app_key = fields.Char(string=u'AppKey')
    app_secret = fields.Char(string=u'AppSecret')
    access_token = fields.Char(string=u'企业应用的凭证密钥')
    note = fields.Text(string=u'备注')
    is_close = fields.Boolean(default=True, string=u'是否关闭消息', help=u'关闭后钉钉不再发送消息')
    company_id = fields.Many2one('res.company', string=u'公司', default=lambda self: self.env.user.company_id)

    def action_gettoken(self):
        """
        取Token
        """
        client = AppKeyClient(self.corp_id, self.app_key, self.app_secret)  # 新 access_token 获取方式
        parm = {
            'access_token': client.access_token,
        }
        self.write(parm)

    @api.model
    def _get_ding_access_token(self):
        records = self.search([])
        for line in records:
            client = AppKeyClient(line.corp_id, line.app_key, line.app_secret)  # 新 access_token 获取方式
            parm = {
                'access_token': client.access_token,
            }
            line.write(parm)

        return True
